/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Persistencia;

import java.sql.*;
import Dominio.Arco;
import java.util.LinkedList;

/**
 *
 * @author beatriz
 */
public class DAOCallejero {

    private Agente Broker;
    private Connection conexion;

    /*Se inicializa el Callejero y se crea una conexión */
    public DAOCallejero() throws SQLException {
        Broker = Agente.getAgente();
        conexion = Broker.getConnection();
    }

    /* Método Delete : elimina el arco a de la base de datos*/
//    public int delete (Arco a) throws SQLException {
//        int resultado = 0;
//        PreparedStatement s;
//
//        s = conexion.prepareStatement("DELETE * FROM Callejero WHERE id = ? ");
//        s.setString(1, a.getId().toString());
//        resultado = s.executeUpdate();
//        s.close();
//
//        return resultado;
//        }

    /* metodo insert : guarda el arco a en la base de datos */
    public int insert(Arco a) throws SQLException {
        int resultado = 0;
        PreparedStatement s;

        s = conexion.prepareStatement("INSERT INTO Callejero(origen, destino, distancia, bares, ocio,calle) VALUES (?, ?, ?, ?, ?, ?)");
        s.setString(1, a.getOrigen().toString());
        s.setString(2, a.getDestino().toString());
        s.setString(3, a.getDistancia().toString());
        s.setString(4, a.getBares().toString());
        s.setString(5, a.getOcio().toString());
        s.setString(6, a.getCalle());

        resultado = s.executeUpdate();
        s.close();

        return resultado;
    }

    /* devuelve una lista con los arcos que cumplen una determinada
    condición c */
    public LinkedList<Arco> select(String arg, String c) {
        LinkedList<Arco> arcos = new LinkedList<Arco>();
        Statement s;
        ResultSet resultado;

        Integer origen;
        Integer destino, distancia, bares, ocio;
        String calle = "";

        try {
            /* Ejecutamos la consulta y almacenamos el resultado */
            s = conexion.createStatement();
            if (arg.equals("*")) {
                if (c.equals("*")) {
//                    System.out.println("SELECT " + arg + " FROM Callejero");
                    resultado = s.executeQuery("SELECT " + arg + " FROM Callejero");
                } else {
//                    System.out.println("SELECT " + arg + " FROM Callejero WHERE " + c);
                    resultado = s.executeQuery("SELECT " + arg + " FROM Callejero WHERE " + c);
                }
                while (resultado.next()) {
                    origen = resultado.getInt("origen");
                    destino = resultado.getInt("destino");
                    distancia = resultado.getInt("distancia");
//                    id = resultado.getInt("id");
                    bares = resultado.getInt("bares");
                    ocio = resultado.getInt("ocio");
                    calle = resultado.getString("calle");
                    Arco arco = new Arco(origen, destino, distancia, bares, ocio, calle);
                    arcos.add(arco);
                }
            } else {
//                System.out.println("SELECT " + arg + "FROM Callejero ");

                resultado = s.executeQuery("SELECT " + arg + "FROM Callejero ");
                Arco arco = new Arco(-1,-1,resultado.getInt(arg),-1,-1,"");
            }
            /*Procesamos el resultado para devolver una lista de arcos*/

            resultado.close();
            s.close();

        } catch (SQLException e) {
            System.out.println(e.toString());
        }
        return arcos;
    }

    public void cerrarDAO() throws SQLException {
        conexion.close();
    }
}
